//
//  NITimer.m
//  HavalConnect
//
//  Created by nanding on 17/5/12.
//  Copyright © 2017年 mengy. All rights reserved.
//

#import "NITimer.h"

@interface NITimer ()
{
}

@property (nonatomic, strong) NSMutableDictionary *timerContainer;


@end

@implementation NITimer


#pragma mark - 倒计时方法
- (void)countDownWithTotalTime:(int)totalTime
                      callback:(countDownCallback)callback
{
    
    __block int timeout = totalTime; //倒计时时间
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t gcdTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
    dispatch_source_set_timer(gcdTimer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
    dispatch_source_set_event_handler(gcdTimer, ^{
        if(timeout<=0){ //倒计时结束，关闭
            dispatch_source_cancel(gcdTimer);
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置界面的按钮显示 根据自己需求设置
                if (callback) {
                    callback(YES,nil,gcdTimer);
                }
                
            });
        }else{
            int seconds = timeout % 60;
            if (seconds!=0) {
                NSString *strTime = [NSString stringWithFormat:@"%d", seconds];
                dispatch_async(dispatch_get_main_queue(), ^{
                    //设置界面的按钮显示 根据自己需求设置
                    if (callback) {
                        callback(NO,strTime,gcdTimer);
                    }
                    
                });
            }
            
            timeout--;
            
        }  
    });  
    dispatch_resume(gcdTimer);
}

/**
 停止倒计时
 */
- (void)cancelCountDown:(dispatch_source_t)gcdTimer
{
    if (gcdTimer) {
       dispatch_source_cancel(gcdTimer); 
    }
    
    
}

@end
